const app = getApp();
const request = require('../../utils/request.js');
const JwtUtil = require('../../utils/jwt.js');
Page({
  data: {
    merchant: {}, // 商户信息
    goodsList: [], // 商品列表
    groupBuyDtoList: [], // 团购列表
    merchantId: '' ,// 商户ID
    goodsCount: {}, // 存储商品数量：{商品ID: 数量}
    userId: null, 
  },

  onLoad(options) {
    // 接收从列表页传递的商户ID
    this.setData({ merchantId: options.id });
    // 加载详情数据
    this.loadDetailData();
    this.getUserIdFromToken();
  },
  getUserIdFromToken() {
    try {
      // 从存储中获取 token
      const token = wx.getStorageSync('token');
      
      if (!token) {
        console.log('未找到 token');
        this.goToLogin();
        return;
      }

      // 解析 token 获取用户 ID
      const userId = JwtUtil.getUserId(token);
      
      if (userId) {
        console.log('用户ID:', userId);
        this.setData({ userId });
        // 继续你的业务逻辑
      } else {
        console.log('解析用户ID失败');
        this.goToLogin();
      }
    } catch (error) {
      console.error('获取用户ID异常:', error);
      this.goToLogin();
    }
  },
  /**
   * 加载商户详情、商品、团购数据
   */
  loadDetailData() {
    const { merchantId } = this.data;
    wx.showLoading({ title: '加载中...' });

    request({
      url: `/merchant/wx/detail/${merchantId}`,
      method: 'GET'
    }).then((res) => {
      wx.hideLoading();
      if (res.code === 200) {
        const { merchant, goodsList, groupBuyDtoList } = res.data;
        if (merchant && merchant.image) {
          merchant.image = `http://localhost:9000${merchant.image}`;
        }
        this.setData({
          merchant,
          goodsList,
          groupBuyDtoList
        });
      } else {
        wx.showToast({ title: res.msg || '加载失败', icon: 'none' });
      }
    }).catch((error) => {
      wx.hideLoading();
      console.error('加载失败：', error);
      wx.showToast({ title: '网络异常', icon: 'none' });
    });
  },
  handleCountChange(e) {
    const { type, goodsId, groupId } = e.currentTarget.dataset;
    let { goodsCount, groupCount } = this.data;
    
    // 商品数量调整
    if (goodsId) {
      const currentCount = goodsCount[goodsId] || 1;
      if (type === 'plus') {
        // 增加：无上限（可根据需求添加最大限制）
        goodsCount[goodsId] = currentCount + 1;
      } else {
        // 减少：最小为1
        goodsCount[goodsId] = currentCount > 1 ? currentCount - 1 : 1;
      }
      this.setData({ goodsCount });
    }
  },
 /**
   * 处理购买/参团（携带数量）
   */
 handleBuy(e) {
  const { type, id } = e.currentTarget.dataset;
      // 调用订单提交方法（传递商品/团购类型和ID）
      this.submitOrder({ type, id });
},
  /**
   * 提交订单（核心：封装数据给后端）
   * @param {Object} params - 订单参数（type: 商品/团购，id: 商品/团购ID）
   */
  submitOrder(params) {
    const { type, id } = params;
    const { userId, merchantId } = this.data;
    let items = [];
  
    wx.showLoading({ title: '提交订单...' });
  
    if (type === 'goods') {
      const goods = this.data.goodsList.find(item => item.id === id);
      const count = this.data.goodsCount[id] || 1;
      if (goods) {
        items = [{
          id: goods.id,
          name: goods.name,
          price: goods.price,
          num: count
        }];
      }
      var orderData = { userId, merchantId, items };
  
      request({
        url: '/api/orders/create/coupon',
        method: 'POST',
        data: orderData,
        header: { 'Content-Type': 'application/json' }
      }).then(res => {
        wx.hideLoading();
        if (res.code === 200) {
          const orderId = res.data.id || res.data.order?.id || ''; // 兼容返回格式
          wx.showToast({ title: '订单创建成功', icon: 'success' });
          // 跳转到“我的订单”页面
          wx.navigateTo({ url: `/pages/order/order` }); 
        } else {
          wx.showToast({ title: res.msg || '订单创建失败', icon: 'none' });
        }
      }).catch(err => {
        wx.hideLoading();
        console.error('订单提交失败', err);
        wx.showToast({ title: '网络异常，订单提交失败', icon: 'none' });
      });
  
    } else if (type === 'group') {
      const group = this.data.groupBuyDtoList.find(item => item.id === id);
      if (!group) return;
      request({
        url: '/api/orders/create/group',
        method: 'POST',
        data: group,
        header: { 'Content-Type': 'application/json' }
      }).then(res => {
        wx.hideLoading();
        if (res.code === 200) {
          const orderId = res.data.id || res.data.order?.id || '';
          wx.showToast({ title: '订单创建成功', icon: 'success' });
          wx.navigateTo({ url: `/pages/order/order` }); 
        } else {
          wx.showToast({ title: res.msg || '订单创建失败', icon: 'none' });
        }
      }).catch(err => {
        wx.hideLoading();
        console.error('订单提交失败', err);
        wx.showToast({ title: '网络异常，订单提交失败', icon: 'none' });
      });
    }
  }
  
});